package com.example.spring.common;

/**
 * 统一的返回对象类
 * 用于封装API接口的响应数据
 * 包含状态码、消息和数据三部分
 */
public class Result {
    /**
     * 成功状态码
     */
    public static final String CODE_SUCCESS = "200";
    
    /**
     * 权限错误状态码
     */
    public static final String CODE_AUTH_ERROR = "401";
    
    /**
     * 系统错误状态码
     */
    public static final String CODE_SYS_ERROR = "500";

    /**
     * 状态码
     */
    private String code;
    
    /**
     * 消息
     */
    private String msg;
    
    /**
     * 数据对象
     */
    private Object data;

    /**
     * 获取状态码
     * @return 状态码
     */
    public String getCode() {
        return code;
    }

    /**
     * 设置状态码
     * @param code 状态码
     */
    public void setCode(String code) {
        this.code = code;
    }

    /**
     * 获取消息
     * @return 消息
     */
    public String getMsg() {
        return msg;
    }

    /**
     * 设置消息
     * @param msg 消息
     */
    public void setMsg(String msg) {
        this.msg = msg;
    }

    /**
     * 获取数据
     * @return 数据对象
     */
    public Object getData() {
        return data;
    }

    /**
     * 设置数据
     * @param data 数据对象
     */
    public void setData(Object data) {
        this.data = data;
    }

    /**
     * 默认构造函数
     */
    public Result() {
    }

    /**
     * 带参数的构造函数
     * @param code 状态码
     * @param msg 消息
     * @param data 数据对象
     */
    public Result(String code, String msg, Object data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    /**
     * 创建成功响应，无数据
     * @return Result对象
     */
    public static Result success() {
        return new Result(CODE_SUCCESS, "请求成功", null);
    }

    /**
     * 创建成功响应，带数据
     * @param data 数据对象
     * @return Result对象
     */
    public static Result success(Object data) {
        return new Result(CODE_SUCCESS, "请求成功", data);
    }

    /**
     * 创建默认系统错误响应
     * @return Result对象
     */
    public static Result error() {
        return new Result(CODE_SYS_ERROR, "系统错误", null);
    }

    /**
     * 创建自定义消息的错误响应
     * @param msg 错误消息
     * @return Result对象
     */
    public static Result error(String msg) {
        return new Result(CODE_SYS_ERROR, msg, null);
    }

    /**
     * 创建自定义状态码和消息的错误响应
     * @param code 状态码
     * @param msg 错误消息
     * @return Result对象
     */
    public static Result error(String code, String msg) {
        return new Result(code, msg, null);
    }
}

